1
การออกแบบเพื่อความยืดหยุ่น: หน้าตาตาราง
AI020Lesson 4
00:00

รากฐานของระบบยืดหยุ่นอยู่ที่การกำหนดสัญญาหรืออินเทอร์เฟซภายในที่แน่นอน สัญญา หรืออินเทอร์เฟซที่วัตถุต้องปฏิบัติตาม ในบริบทนี้ เราจะกำหนด อินเทอร์เฟซตาราง ที่วัตถุเซลล์ทุกตัวรับรองว่ามีเมธอดเฉพาะสามแบบที่จำเป็น: minWidth(), minHeight()และ draw(width, height).

1. สัญญาอินเทอร์เฟซ

โดยการมาตรฐานเมธอดเหล่านี้ ตรรกะการจัดวางสามารถคำนวณขนาดแถวและคอลัมน์ทั่วไปได้ โดยไม่ต้องรู้ประเภทข้อมูลภายในของเซลล์แต่ละตัว นี่เป็นตัวอย่างคลาสสิกของ พอลิโมฟิซึมที่อิงจากอินเทอร์เฟซ.

2. การใช้งานคลาส TextCell

เมธอด TextCell คอนสตรัคเตอร์จะเตรียมข้อมูลดิบโดยการแยกสตริงออกเป็นอาร์เรย์ตามบรรทัด ซึ่งจะเปลี่ยนความซับซ้อนจากขั้นตอนการวาดภาพมาเป็นขั้นตอนการสร้างวัตถุ

this.text = text.split("\n");

3. การวาดที่แน่นอน

เมธอด draw(width, height) เมธอดนี้รับประกันว่าผลลัพธ์ของทุกเซลล์จะถูกเติมเต็มอย่างสมบูรณ์โดยใช้ฟังก์ชันช่วยเสริม repeat() ช่วยให้การจัดเรียงแนวตั้งและแนวนอนคงที่ ไม่ว่าความยาวของเนื้อหาจะเป็นเท่าใด

ชื่อคิลิมันจาโรความสูง5895คอลัมน์จัดเรียงตัวโดยใช้ค่า minWidth() ที่คำนวณแล้ว

$$\text{การเติม} = \text{กว้าง} - \text{ความยาวบรรทัด}$$

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>